import pymysql

class Stu:
    """
    自定义stu表信息操作类
    """
    def __init__(self):
        '''构造方法，连接MYSQL数据库'''
        self.db = pymysql.connect(host='localhost', user='root', password='',db='studb',charset='utf8')
        self.cursor=self.db.cursor()

    def display(self):
        '''定义学员信息查询方法'''
        try:    #此处建立一个处理异常
            self.cursor.execute('select * from stu;')
            if self.cursor.rowcount==0:
                print("========== 没有学员信息可以输出！=============")
            else:
                print("|{0:<5}| {1:<10}| {2:<5}| {3:<10}|".format("sid", "name", "age", "classid"))
                print("-" * 40)
                for i in self.cursor.fetchall():
                    print("|{0:<5}| {1:<10}| {2:<5}| {3:<10}|".format(i[0], i[1], i[2],i[3]))
        except Exception as err:
            self.db.rollback()
            print('执行查询操作失败！,原因是：', err)

    def insert(self,stu):
        '''定义学生信息添加方法'''
        try:
            self.cursor.execute('insert into stu values(null,"{}","{}","{}");'.format(stu["name"],stu["age"],stu["classid"]))
            self.db.commit()
        except Exception as err:
            self.db.rollback()
            print('执行添加信息操作失败！,原因是：', err)

    def delete(self,sid):
        '''定义学员信息删除方法'''
        try:
            self.cursor.execute('delete from stu where id={};'.format(sid))
            self.db.commit()
        except Exception as err:
            self.db.rollback()
            print('执行删除操作失败！,原因是：', err)

    def __del__(self):
        '''析构方法，关闭数据库'''
        self.cursor.close()
        self.db.close()

#实例化操作类对象
studb=Stu()
#程序主界面
while True:
    # 输出初始界面
    print("="*12,"学员管理系统","="*14)
    print("{0:1} {1:13} {2:15}".format(" ","1. 查看学员信息","2. 添加学员信息"))
    print("{0:1} {1:13} {2:15}".format(" ","3. 删除学员信息","4. 退出系统"))
    print("="*40)
    key = input("请输入对应的选择：")
    # 根据键盘值，判断并执行对应的操作
    if key == "1":
        print("="*12,"学员信息浏览","="*14)
        studb.display()
        input("按回车键继续：")
    elif key == "2":
        print("="*12,"学员信息添加","="*14)
        stu={}
        stu['name']=input("请输入要添加的姓名：")
        stu['age']=int(input("请输入要添加的年龄："))
        stu['classid']=input("请输入要添加的班级号：")
        studb.insert(stu)
        studb.display()
        input("按回车键继续：")
    elif key == "3":
        print("="*12,"学员信息删除","="*14)
        studb.display()
        sid = input("请输入你要删除的信息id号：")
        studb.delete(sid)
        studb.display()
        input("按回车键继续：")
    elif key == "4":
        print("="*12,"再见","="*14)
        break
    else:
        print("======== 无效的键盘输入！ ==========")